package myjava.constructors;

public class Root2 {

    /* You cannot make a call to an instance method, or access an instance variable,
       until after the super constructor runs.@param args the command line arguments */
    public static void main(String[] args) {

       
    }
}

class Foo {

   private String useItAfterSuperHasReturned() {
      return "yo";
   }

   static private String thisWorks() {
      return "yo";
   }

   Foo() {
      // this works cuz the method called is static and doesn't belong to the instance
      this(Foo.thisWorks());
      // the next line doesn't work cuz you are trying to use an instance method b4 super() has returned
      // this(this.useItAfterSuperHasReturned());

      /* BASICALLY DON'T USE "this" UNTILL JAVA HAS DONE ALL THE ROUTINES REQUIRED BY AN OBJECT
         AKA STUFF CONTAINED IN THE CONTRUCTOR OF OBJECT */

   }

   Foo(String s) {
      // qui viene inserito una chiamata a super()
   }
}